/******************************************************************************\
 *                                                                              *
 *     File: Dierentuin.h                                                       *
 *                                                                              *
 *   Author: Jan Meuleman / Douwe A. van Twillert                               *
 *  Purpose: Declaratie van de klasse Dierentuin                                *
 *  Version: 1.0      MEM 20020124                                              *
 *           - eerste versie                                                    *
 *  Version: 1.1      TWI 20080218                                              *
 *           - header aangepast voor duidelijk kunnen printen                   *
 *           - kleine aanpassingen om het half werkend te krijgen               *
 *                                                                              *
\******************************************************************************/

#ifndef DIERENTUIN_H
#define DIERENTUIN_H

#include <string>
#include <list>
#include <map>
#include <vector>
#include <iostream>
#include <assert.h>

#include "Dier.h"
#include "Werknemer.h"
#include "Kooi.h"

using namespace std;

class Dierentuin {
private:
    string de_naam;

    map<int, Dier*>* dieren;
    vector<int>* beschikbareDierNummers;
    int hoogsteDierNummer;

    map<int, Werknemer*>* werknemers;
    vector<int>* beschikbareWerknemerNummers;
    int hoogsteWerknemernummer;

    map<string, Kooi*>* kooien;
    void fillVectors();
    
public:
    Dierentuin(string naam);
    ~Dierentuin();

    // getters en setters
    string getNaam();

    // use cases
    void toevoegen(string option);
    void verwijderen(string option);
    void dierToevoegen(string dierNaam, int dierLeeftijd);
    void dierVerwijderen(int nummer);
    void werknemerToevoegen(string werknemerNaam, int werknemerLeeftijd);
    void werknemerVerwijderen(int nummer);
    void overzichtDieren();
    void overzichtWerknemers();
    int getLaagsteBeschikbareNummer(string option);
    Dier* getDier(int nummer);
    Werknemer* getWerknemer(int nummer);
};

#endif 
